<?php

abstract class ViewManutencaoPadrao extends ViewPadraoSistema {
    const ACAO_INCLUIR    = 'inc';
    const ACAO_ALTERAR    = 'alt';
    const ACAO_EXCLUIR    = 'exc';
    const ACAO_VISUALIZAR = 'vis';
    /** @var CampoBase */
    protected $campo = array();
    
    public function __construct() {
        parent::__construct();
        $this->criaCampos();
    }
    
    public function getCampos() {
        return $this->campo;
    }
    
    public function isEnviada() {
        foreach ($this->campo as $oCampo) {
            if (isset($_POST[$oCampo->getNome()])) {
                return true;
            }
        }
        return false;
    }
    
    public function limpaCampos() {
        foreach ($this->campo as $oCampo) {
            $oCampo->setValor(null);
        }        
    }

    protected function imprimeConteudo() {
        ?>
        <div id="div_principal">
            <form name="frm_cadastro" id="frm_cadastro" action="" enctype="multipart/form-data" method="POST">
                <?
                $this->imprimeTitulo();
                $this->imprimeCampos();
                $this->imprimeRodape();
                ?>                
            </form>
        </div>
        <?
    }
    
    protected function imprimeCampos() {
        ?>
        <div class="div_manutencao">
            <table class="tb_cadastro">
                <? foreach ($this->campo as $oCampo) { ?>
                <tr>
                    <td class="td_label">
                        <?= $oCampo->getHtmlLabel() ?>&nbsp;
                    </td>
                    <td class="td_campo">
                        <?= $oCampo->getHtml() ?>
                    </td>
                </tr>
                <? } ?>
            </table>
        </div>
        <?
    }

    protected function imprimeRodape() {
        ?>
        <div class="div_rodape">
            <? 
            $oBotaoConfirmar = new Botao('Confirmar');
            $oBotaoConfirmar->setOnClick('validaFormulario()');
            echo $oBotaoConfirmar->getHtml(); 
            
            echo '&nbsp;';
            
            $oBotaoLimpar = new Botao('Limpar', Botao::TIPO_RESET);
            echo $oBotaoLimpar->getHtml(); 
            
            echo '&nbsp;';
            
            $oBotaoVoltar = new Botao('Voltar');
            $oBotaoVoltar->setOnClick('voltarConsulta()');
            echo $oBotaoVoltar->getHtml();             
            ?>
        </div>
        <?        
    }


    protected function imprimeScript() {
        parent::imprimeScript();
        ?>
        <script>
            function validaFormulario() {
                var sMsg = '';
                var oFrm = document.frm_cadastro;
                
                <?
                    foreach ($this->campo as $oCampo) {
                        echo $oCampo->getJsValidacao();
                    }
                ?>
                
                if (sMsg.length > 0) {
                    alert(sMsg);
                }
                else {
                    oFrm.submit();
                }
            }
            
            function voltarConsulta() {
                loadPage('<?= $this->Principal->getFormulario()->getRotina() ?>', 'con');
            }
        </script>
        <?
    }
    
    abstract protected function criaCampos();
    

}